home *** CD-ROM | disk | FTP | other *** search
- /*
- * tnb.h for X68k XC Compiler v2.00 Copyright 1993 1994 TNB製作所
- * + TNB.L
- * + ZMCLIB.L
- */
- #include <IOCSLIB.H>
- #include <DOSLIB.H>
- /*
- z:\HELP\IOCS_DOC.HLP 1
- z:\HELP\DOS_DOC.HLP 1
- */
- /* 定番 */
- #define UNchar unsigned char
- #define UNshort unsigned short
- #define UNint unsigned int
- #define UNlong unsigned long
- #define elif else if
- #define VMODE 0x80000000
- /* インライン関数もどき */
- #define VADDS(p,x,y) ( 0xC00000+(p)*0x80000+(x)*2+(y)*1024 )
- #define VADDS_(x,y) ( (x)*2+(y)*1024 )
- #define ADDS_(x,y) ( (x)*2+(y)*1024 )
- #define BADDS(p,x,y) ( 0xEBC000+(p)*0x2000+(x)*2+(y)*0x80 )
- #define BADDS_(x,y) ( (x)*2+(y)*0x80 )
- #define RR(R) ( ((R)>> 6) & 0x1F )
- #define GG(G) ( ((G)>>11) & 0x1F )
- #define BB(B) ( ((B)>> 1) & 0x1F )
- #define II(I) ( (I) & 1 )
- #define RGB(R,G,B) ( ((R)<<6) | ((G)<<11) | ((B)<<1) )
- #define pow2(i) (1<<(i))
- #define bit(i) (1<<(i))
- #define nbit(i) ( 0xFFFFFFFF-(1<<(i)) )
- #define down_for(I,J) for( I=(J)-1;I>=0;I-- )
- #define B_USER(I) B_SUPER(I)
- #define B_USER_(I) {if ( (I)>=0 ) B_SUPER(I);}
-
- #ifdef FORWORD
- #define __PROTO_TYPE
- #endif
- #ifdef __STDC__
- #define __PROTO_TYPE
- #endif
- #ifdef __PROTO_TYPE
- /*------------------------------------------------------*/
- /* STICK関係PROTO */
- /*------------------------------------------------------*/
- /*--データ引--*/
- /*::ノーマル::*/
- long JOYSTICK1(void); /*[0BA0RLDU] */
- long JOYSTICK2(void);
- /*::マウス::*/
- long MSXMOUSE(long po);
- /* MSXマウス専用
- 挿されていない場合は 0x0011が返るがこれでの識別は不可能
- po=0;JOY STICK PORT 1
- !=0;JOY STICK PORT 2
- - - - - - - [R][L]:[ X 8bit ]:[ Y 8bit ]
- */
- long SEGAMOUSE(void);
- /* JOY PROT1 マウス
- 戻り値が-1の場合 タップ端末マウス情報をSEGAMOUSES[x] に格納
- 戻り値が-2の場合 セガマウス接続、情報をSEGAMOUSES[0]に格納
- 0の場合 セガマウス(タップ)が接続されていない。
- (スティック情報は格納されない)
- */
- struct SEGAMOUSEPTR {
- unsigned char type;
- unsigned char bot; /*- - [R][L]*/
- char xm,ym; /*X,Y移動値*/
- };
- extern struct SEGAMOUSEPTR SEGAMOUSES[4];
- /* SEGAMOUSES は SEGATAPS と同じアドレス!! */
- /*::スティック::*/
- long MDJOYSTICK(long po);
- /* メガドラパッド用 68用のものチェック可能
- JOYSTICK?() 同等品
- po=0;JOY STICK PORT 1
- !=0;JOY STICK PORT 2
- */
- long EXJOYSTICK(long po);
- /* ノーマル、リブラブ、CPMD
- JOYSTICK?() 同等品
- po=0;JOY STICK PORT 1
- !=0;JOY STICK PORT 2
- */
- long CYBERSTICK(void);
- /* 戻り値がマイナスの場合 CYBERS に JOY PORT 1 の サイバー
- スティックの情報を読み込みます。
- 0の場合(Analog)接続されていない。
- */
- struct CYBERPTR {
- unsigned short bot; /* 0 0 0 0 [A][B][A][B][A][B][C][D][E1][E2][Sta][SeL]*/
- unsigned char ud1;
- unsigned char rl1;
- unsigned char ud2;
- unsigned char rl2;
- };
- extern struct CYBERPTR CYBERS;
- /*::マルチタップ::*/
- long SEGATAP(long mo);
- long SEGATAP_(long mo);
- /* セがタップ専用
- 戻り値が-1の場合SEGATAPS[x]に情報を格納します
- 戻り値が-2の場合 セガマウス接続、情報をSEGAMOUSES[0]に格納
- 以外の値はMDJOYSTICK(0)と同。
- mo=0;マウスデータは無視する。type==2の時でもデータは無効
- !=0;マウスデータの収納。type==2のデータは有効(JOYMOUSEPTR[])
- SEGATAP_()はタップとの通信中、他の割り込みを禁止しない
- */
- struct SEGATAPPTR {
- unsigned char type; /*pad;0|1 mouse;2 */
- unsigned char bot; /*pad;未使用 mouse;- - [R][L]*/
- unsigned short data; /*pad;型による mouse;[X 8bit][Y 8bit]*/
- };
- extern struct SEGATAPPTR SEGATAPS[4];
-
-
- /* JOYSTICK?() MDJOYSTICK() SEGATAPS[?].dataの値
- 各bit 押されていれば 1になる
- このビットに注目
- ↓ ↓ ↓ ↓
- ◎68パット
- 0 0 0 0 0 0 0 0 : 0 [B] [A] 0 [R][L][D][U]
- ( 0 [B] [A] 0 [R][L][D][U] : 0 [B] [A] 0 [R][L][D][U] )
- ◎6ボタンパット
- [st][C][B][A][md][X][Y][Z] : 1 [B][c] 0 [R][L][D][U]
- ◎3ボタンパット
- [st][C][B][A] 0 0 0 0 : 1 [B][c] 1 [R][L][D][U]
- ◎マジカルパット
- 1 [B] [D] 0 [RT][LT] 1 1 : 0 [A] [C] 0 [R][L][D][U]
- ◎(EX)リブラブパット
- 0 0 0 0 [R][L][D][U] : 0 [B] [A] 0 [R][L][D][U]
- ◎(EX)CPSF-MD パット
- 0 [st][C] 0[md][X][Y][Z] : 0 [B] [A] 0 [R][L][D][U]
- ◎(EX)CPSF-PC スティック
- 0 [st][L] 0[sl][X][Y][R] : 0 [B] [A] 0 [R][L][D][U]
- ◎(EX)CyberStick-DigtalMode
- 0 [E2][E1]0[D][C][S][S]: 0 [B] [A] 0 [R][L][D][U]
- ◎SEGA-TAPパット
- [st][C][B][A][md][X][Y][Z] : 1 [B][c] 0 [R][L][D][U]
- [st][C][B][A] 0 0 0 0 : 1 [B][c] 1 [R][L][D][U]
- SEGATAPPTR.type= 0 ; 3ボタン
- 1 ; 6ボタン
- 2 ; マウス
- 15 ; 非接続
- */
- /*--データチェック--*/
- /*ノーマル専用(含入力)*/
- long STICK1(void);
- long STRIG1_A(void);
- long STRIG1_B(void);
- long STRIG1_RUN(void);
- long STRIG1_SELECT(void);
- long STICK2(void);
- long STRIG2_A(void);
- long STRIG2_B(void);
- long STRIG2_RUN(void);
- long STRIG2_SELECT(void);
- /*多種対応*/
- long STICKD(long d);
- /* 向きを数値で返す
- d=データ
- */
- #define STRIGD_A(d) ((d)&0x0020)
- #define STRIGD_B(d) ((d)&0x0040)
- #define STRIGD_AA(d) ((d)&0x1000)
- #define STRIGD_BB(d) ((d)&0x2000)
- #define STRIGD_CC(d) ((d)&0x4000)
- #define STRIGD_XX(d) ((d)&0x0400)
- #define STRIGD_YY(d) ((d)&0x0200)
- #define STRIGD_ZZ(d) ((d)&0x0100)
- #define STRIGD_RUN_(d) ((d)&0x8000)
- #define STRIGD_SELECT_(d) ((d)&0x0800)
- long STRIGD_RUN(long d); /*Towns [Run] 対応*/
- long STRIGD_SELECT(long d); /*Towns [Sel] 対応*/
-
- /*マルチタップ専用*/
- #define JOYSTICKM(n) ( (SEGATAPS[n].type<=1)? SEGATAPS[n].data :0 )
- #define STRIGM_A(n) ( (SEGATAPS[n].type<=1)?STRIGD_A( SEGATAPS[n].data):0 )
- #define STRIGM_B(n) ( (SEGATAPS[n].type<=1)?STRIGD_B( SEGATAPS[n].data):0 )
- #define STRIGM_AA(n) ( (SEGATAPS[n].type<=1)?STRIGD_AA(SEGATAPS[n].data):0 )
- #define STRIGM_BB(n) ( (SEGATAPS[n].type<=1)?STRIGD_BB(SEGATAPS[n].data):0 )
- #define STRIGM_CC(n) ( (SEGATAPS[n].type<=1)?STRIGD_CC(SEGATAPS[n].data):0 )
- #define STRIGM_XX(n) ( (SEGATAPS[n].type<=1)?STRIGD_XX(SEGATAPS[n].data):0 )
- #define STRIGM_YY(n) ( (SEGATAPS[n].type<=1)?STRIGD_YY(SEGATAPS[n].data):0 )
- #define STRIGM_ZZ(n) ( (SEGATAPS[n].type<=1)?STRIGD_ZZ(SEGATAPS[n].data):0 )
- #define STRIGM_RUN(n) ( (SEGATAPS[n].type<=1)?(SEGATAPS[n].data & 0x8000):0 )
- #define STRIGM_SELECT(n) ( (SEGATAPS[n].type<=1)?(SEGATAPS[n].data & 0x0800):0 )
-
- /*------------------------------------------------------*/
- /* */
- /* SPRITE関係PROTO */
- /* */
- /*------------------------------------------------------*/
- #define SP_ON2_S() (*(unsigned short*)0xEB0808|=0x0200)
- #define SP_OFF2_S() (*(unsigned short*)0xEB0808&=0xFDFF)
- #define SP_ON_S() (*(unsigned short*)0xE82600|=0x0040)
- #define SP_OFF_S() (*(unsigned short*)0xE82600&=0xFFBF)
- long SP_COLOR(long pc,long c,long pb);
- long SP_COLOR_S(long pc,long c,long pb);
- /* スプライトカラーチェンジ
- pc=カラーコード(0-15)
- c=カラーナンバー(0-65535) c=-1の場合変更せず現在値を戻す
- pd=カラーブロック(0-15)
- or
- pc=カラーコード(0-255)
- c=カラーナンバー(0-65535) c=-1の場合変更せず現在値を戻す
- pd=0 (固定)
- */
- void SP_DEFCH(long cd,void *,long no);
- void SP_DEFCH_S(long cd,void *,long no);/*SUPER*/
- /*
-
-
- */
- void SP_MOVE(long n,long x,long y);
- void SP_MOVE_S(long n,long x,long y);
- /* スプライトプレーン移動のみ
- n=プレーンナンバー x,y=座標
- */
- void BGSET(long BA,long p);
- #define BGSET_S(BA,p) ( *(unsigned short*)(BA)=(p) )
- /* BGへの書き込み
- BA=BADDS(p,x,y)での指定
- p= bit 15 垂直反転
- bit 14 水平反転
- bit 8,9,10,11 パレット
- bit 0-7 0-255 キャラナンバー
- */
- void BGTEXTST0(long x,long y,long p);
- void BGTEXTST0_S(long x,long y,long p);
- void BGTEXTST1(long x,long y,long p);
- void BGTEXTST1_S(long x,long y,long p);
- /* BGへの書き込み
- x,y=座標 BG1へはy+=32で可能
- p= bit 15 垂直反転
- bit 14 水平反転
- bit 8,9,10,11 パレット
- bit 0-7 0-255 キャラナンバー
- */
- /*------------------------------------------------------*/
- /* GRAPHIC関係PROTO */
- /*------------------------------------------------------*/
- #define GG_ON_S() (*(unsigned short*)0xE82600|=0x000F)
- #define GG_OFF_S() (*(unsigned short*)0xE82600&=0xFFF0)
- void GGPRIORITY(long GP0,long GP1,long GP2,long GP3);
- /* Graphicの4つのプレーンの優先順位を変える
- GP0ーGP3=0から3で、0が一番上
- defaultでは(0,1,2,3)。同じ数字は禁止。
- 256色モードではGP0+GP1がペアでページ0
- GP2+GP3がペアでページ1をきめる
- */
- void GGFILL(long VA,long lx,long ly,long c);
- void GGFILL_S(long VA,long lx,long ly,long c);/*SUPER*/
- void GGFILL8(long VA,long lx8,long ly,long c);
- void GGFILL8_S(long VA,long lx8,long ly,long c);/*SUPER*/
- /* GraphicにBOX FILLを書く(全画面対応)
- VA=VADDS(p,x,y)で左上座標
- lx,ly=BOXの辺の長さ
- lx8=横方向のBOXの辺の長さ、ただし実際の1/8で指定。
- c=カラー
- */
- void GGPSET(long VA,long c);
- #define GGPSET_S(VA,c) ( *(unsigned short*)(VA)=(c) )
- /* Graphicに点を打つ(全画面対応)
- VA=VADDS(p,x,y)で座標
- c=カラー
- */
- long GGPALET(long n,long c);
- long GGPALET_S(long n,long c);
- /* パレットチェンジ
- n=パレットコード(画面モードによる)
- c=カラーコード(0-65535)
- */
- void GGMOSAIC(long VA,long lx,long ly,long m);
- /* Graphicの指定範囲内のモザイク処理をする(全画面対応)
- VA=VADDS(p,x,y)で左上座標
- lx,ly=BOXの辺の長さ
- m=モザイクモード
- */
- long GGPOINT(long VA);
- #define GGPOINT_S(VA) ( *(unsigned short*)(VA) )
- /* Graphicの色を返す(全画面対応)
- VA=VADDS(p,x,y)で座標
- */
- void GGGET(long VA,long lx,long ly,void *bu);
- void GGGET_S(long VA,long lx,long ly,void *bu);
- void GGPUT(long VA,long lx,long ly,void *bu);
- void GGPUT_S(long VA,long lx,long ly,void *bu);
- /* Graphicの指定範囲のゲットプット。ただし、256色モード以下用
- VA=VADDS(p,x,y)で左上座標
- lx=横方向のBOXの辺の長さ
- ly=たて方向BOXの辺の長さ
- bu=パッファホインタ。バッファーは要(lx×ly)byte
- (DMAC使用)
- */
- void GGGET8(long VA,long lx8,long ly,void *bu);/*xは8Dot単位*/
- void GGPUT8(long VA,long lx8,long ly,void *bu);/*xは8Dot単位*/
- /* Graphicの指定範囲のゲットプット。ただし、256色モード以下用
- VA=VADDS(p,x,y)で左上座標
- lx8=横方向のBOXの辺の長さ、ただし実際の1/8で指定。
- ly=たて方向BOXの辺の長さ
- bu=パッファホインタ。バッファーは要(lx8×8×ly)byte
- (非DMAC使用:ClockUp機に有効!?)
- */
- void GGCOPY(long VA1,long lx,long ly,long VA2);
- void GGCOPY_S(long VA1,long lx,long ly,long VA2);
- /* Graphicの指定範囲のコピー
- VA1=VADDS(p,x,y)で左上座標 sous
- VA2=VADDS(p,x,y)で左上座標 dest
- lx=横方向のBOXの辺の長さ
- ly=たて方向BOXの辺の長さ
- */
- #define GGCOPY8(VA1,lx8,ly,VA2) GGCOPY(VA1,(lx8)*8,ly,VA2)
- #define GGCOPY8_S(VA1,lx8,ly,VA2) GGCOPY_S(VA1,(lx8)*8,ly,VA2)
- /* Graphicの指定範囲のコピー
- VA1=VADDS(p,x,y)で左上座標 sous
- VA2=VADDS(p,x,y)で左上座標 dest
- lx8=横方向のBOXの辺の長さ、ただし実際の1/8で指定。
- ly=たて方向BOXの辺の長さ
- */
- void GGSCRCLS(long m);
- /* Graphicの消去
- m=CLS Mode Nunber
- 0,1 ; Page 0,1の高速クリヤー
- 2,3 ; Page 0,1の変則クリヤー
- 4以上 禁止、動作は保証されない
- */
- void GGSCRCLS2(long VA,long lx8,long ly);
- /* Graphicの消去
- VA=VADDS(p,x,y)で左上座標
- lx8=横方向のBOXの辺の長さ、ただし実際の1/8で指定。
- ly=たて方向BOXの辺の長さ
- */
- void GGCHCOLOR8(long VA,long lx8,long ly,long c1,long c2);
- /* Graphicの指定範囲のカラーチェンジ
- VA1=VADDS(p,x,y)で左上座標 sous
- lx8=横方向のBOXの辺の長さ、ただし実際の1/8で指定。
- c1,c2=c1のカラーナンバーをc2のカラーナンバーへ
- */
- /*------------------------------------------------------*/
- /* (GRAPHIC+SPRITE)/2 関係PROTO */
- /*------------------------------------------------------*/
- extern volatile void *GGSP8_BUFF;
- /* GGSP8()用データの先頭アドレス
- defaultでは0xEB8000(SPRITE DATA ADDS)になっている
- */
- void GGSP8(long VA,long c);
- void GGSP8_S(long VA,long c);
- /* GraphicにBGのように表示
- VA = VADDS(p,x,y)で座標指定
- c= bit 15 垂直反転
- bit 14 水平反転
- (bit 12,13 0-1024 キャラナンバー)
- bit 8,9,10,11 パレット
- bit 0-7 0-255 キャラナンバー
- */
- extern volatile void *GGSP16_BUFF;
- /* GGSP16()用データの先頭アドレス
- defaultでは0xEB8000(SPRITE DATA ADDS)になっている
- */
- void GGSP16(long VA,long c);
- void GGSP16_S(long VA,long c);
- /* GraphicにBGのように表示
- VA = VADDS(p,x,y)で座標指定
- c= bit 15 垂直反転
- bit 14 水平反転
- bit 8,9,10,11 パレット
- bit 0-7 0-255 キャラナンバー
- */
- /*+*/
- extern volatile void *GGPCG8_BUFF;
- void GGPCG8(long VA,long c);
- void GGPCG8_S(long VA,long c);
- extern volatile void *GGPCG16_BUFF;
- void GGPCG16(long VA,long c);
- void GGPCG16_S(long VA,long c);
- /*------------------------------------------------------*/
- /* TEXT関係PROTO */
- /*------------------------------------------------------*/
- #define TX_ON_S() (*(unsigned short*)0xE82600|=0x0020)
- #define TX_OFF_S() (*(unsigned short*)0xE82600&=0xFFDF)
- void TXSCRCLS();
- /*------------------------------------------------------*/
- /* FONT関係PROTO */
- /*------------------------------------------------------*/
- /*struct FNTBUF {
- short xl,yl;
- unsigned char buffer[72];
- };*/
- void FNTGET8(long KC,struct FNTBUF *AD);
- /* 8ドット漢字パターンを指定アドレスに書き込む
- KC=漢字コード
- AD=データの書き込まれるアドレス
- 半角のみ 0.w,2.w = Xsize,Ysize(4,8) 全12byte
- 全角のみ 0.w,2.w = Xsize,Ysize(8,8) 全12byte
- */
-
- extern volatile void *FNT12_BUFF;
- /*FNTGET12用 12dotFontData:要町等のの先頭アドレス
- 0の場合,FNTGET12Tが呼び出される
- サイズ 215136byte
- */
- void FNTGET12(long KC,struct FNTBUF *AD);
- /* 12ドット漢字パターンを指定アドレスに書き込む
- KC=漢字コード
- AD=データの書き込まれるアドレス
- 半角のみ 0.w,2.w = Xsize,Ysize(6,12) 全16byte
- 全角のみ 0.w,2.w = Xsize,Ysize(12,12) 全28byte
- FNT12_BUFFが参照される
- */
- void FNTGET12T(long KC,struct FNTBUF *AD);
- /* 12ドット漢字パターンを指定アドレスに書き込む
- 24dotfontをコンバート、全角のみ。半角コードは保証されない
- KC=漢字コード
- AD=データの書き込まれるアドレス
- 全角のみ 0.w,2.w = Xsize,Ysize 全28byte
- */
- #define FNTGET16(A,B) FNTGET(8,A,B)
- #define FNTGET24(A,B) FNTGET(12,A,B)
-
- extern volatile long GGCHAR_COLOR1;
- extern volatile long GGCHAR_COLOR2;
- /*GGCHAR用カラーコード指定
- GGCHAR_COLOR1=文字カラー1(範囲は画面モードによる)
- GGCHAR_COLOR2=文字カラー2
- */
- void GGCHAR(long VA,struct FNTBUF *AD);
- void GGCHAR_S(long VA,struct FNTBUF *AD);/*SUPER*/
- /* GRAPHICにCHAR.表示(全画面,24Dotまで対応)
- VA=VADDS(p,x,y)での座標指定
- AD=FNTGET12等でパターンをセットしたアドレス
- GGCHAR_COLOR1=文字カラー
- */
- void GGCHARB(long VA,struct FNTBUF *AD);
- void GGCHARB_S(long VA,struct FNTBUF *AD);/*SUPER*/
- /* GRAPHICにCHAR.表示(全画面,24Dotまで対応)
- VA=VADDS(p,x,y)での座標指定
- AD=FNTGET12等でパターンをセットしたアドレス
- GGCHAR_COLOR1=文字カラー
- GGCHAR_COLOR2=背景文字カラー
- */
- extern volatile void *FNT8_BUFF;
- /*GGCHAR8/B用 8dotCharData
- 指定無い場合、GCROMの物を使用
- (1*8)*文字数 byte
- moji_s2d.xの出力するデータを使用
- */
- void GGCHAR8(long VA,long CC);
- void GGCHAR8_S(long VA,long CC);
- /* GRAPHICに8DotCHAR.表示(全画面対応)
- VA=VADDS(p,x,y)での座標指定
- CC=キャラクターコード
- */
- void GGCHAR8B(long VA,long CC);
- void GGCHAR8B_S(long VA,long CC);
- /* GGCHAR8()同等品
- GGCHAR_COLOR1:が文字、GGCHAR_COLOR2が背景の色でべた書きする
- VA=VADDS(p,x,y)での座標指定
- CC=キャラクターコード
- */
-
- /*------------------------------------------------------*/
- /* TIMING関係PROTO */
- /*------------------------------------------------------*/
- void CRTVDISP(void);
- #define CRTVDISP_S() \
- asm("@@: btst.b #4,$00e88001 \n\
- beq @b \n\
- @@: btst.b #4,$00e88001 \n\
- bne @b ");
- /* CRTV同期タイミングを計る */
-
- /*TIMER-D*/
- void timD_start(void);
- void timD_end(void);
- void timD_set(long);
- void timD_weit(void);
- long timD_count(void);
- long timD_countD(void);
- /* 1m秒
-
- */
- /*ONTIME*/
- void ONtim_set(long);
- void ONtim_weit(void);
- long ONtim_count(void);
- /* 1/100秒
-
- */
- #define ONtim_countD() ONTIME()
- long ONtim_margin( long ot,long ma );
- /* ma/100sを過ぎていたら1を返す
- ot=前回conutDで拾った値
- ma= 1/100s
- ex) i=ONtime_countD();
- if ( ONtim_margin( i,500 ) ){
- i=ONtim_countD();
- いろいろ;
- }
- */
- /*要PROCESS=*/
- void tim_set(long);
- void tim_weit(void);
- long tim_count(void);
- long tim_countD(void);
- #define tim_countD() TIME_PR()
- /* 1m秒
-
- */
- /*------------------------------------------------------*/
- /* CALC関係 PROTO */
- /*------------------------------------------------------*/
- long isqrt( long r );
- /* 整数平方根
- 戻り値=(long)( √r )
- */
- #ifdef __GNUC__
-
- #define MULU(o1,o2) ( (unsigned short)(o1)*(unsigned short)(o2) )
- #define MULS(o1,o2) ( (short)(o1)*(short)(o2) )
- //static inline int DIVU(long o1,long o2);
- //static inline int DIVS(long o1,long o2);
- //static inline int MODU(long o1,long o2);
- //static inline int MODS(long o1,long o2);
-
- #else
-
- int MULU(long o1,long o2);
- int MULS(long o1,long o2);
- int DIVU(long o1,long o2);
- int DIVS(long o1,long o2);
- int MODU(long o1,long o2);
- int MODS(long o1,long o2);
-
- #endif
-
- /*------------------------------------------------------*/
- /* ETC PROTO */
- /*------------------------------------------------------*/
- /*static inline int ABORT_DISP();*/
- long CHILD(void *st);
- /*long child(void *st);*/
-
- void PRIORITY(long SP,long TX,long GG);
- void scr_prior(long,long,long);/*旧書式*/
- /* スプライト、テキスト、グラフィックの優先順位を変える
- SP=スプライト画面
- TX=テキスト画面
- GG=グラフィック画面
- 0から2で、0が一番上
- defaultでは(0,1,2)。同じ数字は禁止(Err CHKはしてません)。
- */
- void PRTK_OFF(void);
- void PRTK_RECOVER(void);
- /* COPY KEY キャンセル
- COPY KEY 復活
- */
- void INTPT_OFF(void);
- /* INTERRUPTswでの割り込みを禁止*/
- long INTPT_CHK(void);
- /* INTPT_OFF()実行後、ボタンが押されていたら1を返す
- この関数がコールされたら、フラグはクリアされる
- */
- void INTPT_RECOVER(void);
- /* もとに戻す */
-
- void qsort_w(void *, long, long (*)(const void *, const void *));
- /* qsort()の配列要素サイズが2に固定されているもの*/
-
-
- #else
-
- long SP_COLOR();
- void SP_DEFCH();
- void SP_DEFCH_S();/*SUPER*/
- void SP_REGST_MV();
-
- void GGFILL();
- void GGFILL_S();/*SUPER*/
- void GGPSET();
- void GGPSET_S();
- long GGPALET();
- void GGMOSAIC();
-
- void GGGET8();/*xは8Dot単位*/
- void GGPUT8();/*xは8Dot単位*/
- void GGCOPY();
- void GGCOPY_S();/*SUPER*/
- void GGSCRCLS();
- void GGSCRCLS2();
- void GGCHCOLOR8();
-
- void CRTVDISP();
- void CRTVDISP_S();
-
- long STICK1(void);
- long STRIG1_A(void);
- long STRIG1_B(void);
- long STRIG1_RUN(void);
- long STRIG1_SELECT(void);
- long JOYSTICK1(void); /*[-BA-RLDU] *
- long STICK2(void);
- long STRIG2_A(void);
- long STRIG2_B(void);
- long STRIG2_RUN(void);
- long STRIG2_SELECT(void);
- long JOYSTICK2(void);
-
- /*要PROCESS=*/
- void tim_set();
- void tim_weit();
- long tim_count();
-
- /*TIMER-D*/
- void timD_start();
- void timD_end();
- void timD_set();
- void timD_weit();
- long timD_count();
-
- void DRAWMODE();
- void FNTGET12();
-
- void PRTK_OFF();
- void PRTK_RECOVER();
-
- void INTPT_OFF();
- long INTPT_CHK();
- void INTPT_RECOVER();
-
-
- #endif
-
-
-
- /*-----------------ZMCLIB---------------*/
-
-
-
- struct ZMreturn {
- long D0;
- long A0;
- };
- struct ZMplaytmp {
- unsigned long d2;
- unsigned long d3;
- unsigned long d4;
- };
-
- #ifdef __PROTO_TYPE
-
- long Zm_drvchk( void ); /*-1:常駐 0:なし*/
- void Zm_init( void );
- long Zm_alloc( long,long );
- long Zm_assign( long,long );
- long Zm_vget( long,void * );
- long Zm_vset( long,void * );
- long Zm_tempo( long );
- void Zm_tempo2( struct ZMreturn * );
- long Zm_trk( long,long );
- void Zm_trk_a( struct ZMreturn * );
- long Zm_free( long );
- long Zm_play( struct ZMplaytmp * );
- unsigned long m_stat( unsigned long );
- long Zm_stop( struct ZMplaytmp * );
- long Zm_cont( struct ZMplaytmp * );
- long Zm_atoi( long );
- void Zinit_all( void );
- void Zinit_stop( void );
- long Zadpcm_read( long,short,short,unsigned short,short );
- long Zplay_cnv_data( long,void * );
- void Zse_play( long,void * );
- void Zse_adpcm1( void *,long,short,short );
- void Zse_adpcm2( long,short,short );
- void Zset_ch_mode( long );
- void Zcalc_total( long );
- void Zfade_out( long );
- long Zm_vset2( long,void * );
- long Zblock_adpcm_data( void * );
- void Zget_trk_tbl( struct ZMreturn * );
- long Zget_timer_mode( void );
- void Zset_fm_master_vol( long );
- void Zset_timer_value( long );
- void Zjump_active( long );
- void Zset_mclk( long );
- /*Zset_loop_time.s 1:*/
- /*Zget_play_work.s 1:*/
- /*Zrelease_support.s 1:*/
-
- #undef __PROTO_TYPE
- #else
-
- void Zm_init();
- long Zm_alloc();
- long Zm_assign();
- long Zm_vget();
- long Zm_vset();
- long Zm_tempo();
- void Zm_tempo2();
- long Zm_trk();
- void Zm_trk_a()
- long Zm_free();
- long Zm_play();
- unsigned long m_stat();
- long Zm_stop();
- long Zm_cont();
- long Zm_atoi();
- void Zinit_all();
- void Zinit_stop();
- long Zadpcm_read();
- long Zplay_cnv_data();
- void Zse_play();
- void Zse_adpcm1();
- void Zse_adpcm2();
- void Zset_ch_mode();
- void Zcalc_total();
- void Zfade_out();
- long Zm_vset2();
- long Zblock_adpcm_data();
- void Zget_trk_tbl();
- long Zget_timer_mode();
- void Zset_fm_master_vol();
- void Zset_timer_value();
- void Zjump_active();
- void Zset_mclk();
-
- #endif
- /*-----------------ZMCLIB---------------*/
-
- #ifdef __GNUC__
-
- /* インラインマクロ定義 */
-
- /*IOCS*/
- #define BITSNS(gr) \
- ({register long _d0 asm("d0"); \
- register long _d1 asm("d1"); \
- _d0=0x04; \
- _d1=(gr); \
- asm("trap #15" \
- :"=d"(_d0) \
- :"0"(_d0),"d"(_d1) \
- :"d0","d1"); \
- _d0; \
- })
- #define MS_CURGT() \
- ({register long _d0 asm("d0"); \
- _d0=0x75; \
- asm("trap #15":"=d"(_d0):"0"(_d0):"d0"); \
- _d0; \
- })
- #define MS_GETDT() \
- ({register long _d0 asm("d0"); \
- _d0=0x74; \
- asm("trap #15":"=d"(_d0):"0"(_d0):"d0"); \
- _d0; \
- })
-
- /*アクセスランプを反転する*/
- #define TIMER_LED() \
- asm(" bset #0,$00e8a01b \
- eori.b #%0000_0111,$00e8a001 \
- ");
-
- /* 文字列操作マクロ */
- #define strcpy_(DES,SRC) \
- do { char *_d = (char *)(DES); \
- char *_s = (char *)(SRC); \
- while (*_d ++ = *_s ++); \
- } while (0)
- #define strcat_(SR0,SR1) \
- do { char *_d = (char *)(SR0); \
- char *_s = (char *)(SR1); \
- while (*_d++ ); \
- _d--; \
- while (*_d ++ = *_s ++); \
- } while (0)
- #define strlen_(SR) \
- ({ char *_p = (SR);long _l = 0; \
- while (*_p ++) _l++; \
- (_l-1); \
- })
-
- #endif
-
- /* メモ */
- /*
- -----------------------------------------------------
- CMP x,y
- 符号なし 符号あり
-
- y > x HI (High) GT (greater Than)
- y >= x CC (Carry Clear) GE (Greater Equal)
- y = x EQ (Equal) EQ (Equal)
- y != x NE (Not Equal) NE (Not Equal)
- y < x CS (Carry Set) LT (Less Than)
- y <= x LS (Lower or Same) LE (Less or Equal)
-
- PL (Plus) MI (Minus)
- VC (Overflow Clear) VS (Overflow Set
- F (always False) T (always True)
- -----------------------------------------------------
- screen(s,j,r,g)
- s= 0 : 256×256
- 1 : 512×512
- 2 : 768×512
- j= 0 : 1024×1024 16color Page0
- 1 : 512×512 16color Page0-3
- 2 : 512×512 256color Page0,1
- 3 : 512×512 65536color Page0
- r= 0 : LowRes
- 1 : HighRes
- g= 0 : Graphic Off
- 1 : Graphic On
- -----------------------------------------------------
- Video Controler R1 $E82500
-
- FE DC BA 98 76 54 32 10
- ┌──┬──┬──┬──┰──┬──┬──┬──┐
- │'00'│ SP │ TX │ GG ┃ GP3│ GP2│ GP1│ GP0│
- └──┴──┴──┴──┸──┴──┴──┴──┘
-
- SP スプライト+BG
- TX テキスト 0-2で0が一番上に
- GG 全グラフィック
-
- GP? 各グラフィックプレーン 0-3で0が一番上に
- -----------------------------------------------------
- Video Controler R2 $E82600
-
- 15 14 13 12 11 10 9 8
- ┌──┬──┬──┬──┰──┬──┬──┬──┰
- │ YS │ AH │ VHT│EXON┃ H/P│ B/P│ G/G│ G/T┃
- └──┴──┴──┴──┸──┴──┴──┴──┸
- YS 0; ノーマル 1;スーパーインポーズ時でもVideo画像無し
- AH 0; ノーマル 1; GG+TextPalet0
- VHT 0; ノーマル 1; GG+Video画像
- EXON 0; ノーマル 1; H/P 有効
- H/P 0; 特殊プライオリティ 1; 半透明 mode
- B/P 0; SHARP 予約 1; H/P 領域指定に最下BIT
- G/G 0; ノーマル 1; GG0とGG1の半透明
- G/T 0; ノーマル 1; GGと下位スクリーンの半透明
-
- 7 6 5 4 3 2 1 0
- ┰──┬──┬──┬──┰──┬──┬──┬──┐
- ┃ '0'│ SON│ TON│ GS4┃ GS3│ GS2│ GS1│ GS0│
- ┸──┴──┴──┴──┸──┴──┴──┴──┘
- SON 0; SP画面非表示 1; SP画面表示
- TON 0; TX画面非表示 1; TX画面表示
- GS4 0; GG画面非表示 1; 実サイズ1024×1024 GG画面表示
- GS3 0; Gplen3 非表示 1; Gplen3 表示
- GS2 0; Gplen2 非表示 1; Gplen2 表示
- GS1 0; Gplen1 非表示 1; Gplen1 表示
- GS0 0; Gplen0 非表示 1; Gplen0 表示
- bit7:があやしい!! 謎の半透明モードになる
-
- $EB0808 bit 9 0;SPRITE/BG 表示OFF (ハイアクセス)
- 1;SPRITE/BG 表示ON
-
-
- -----------------------------------------------------
-
- BITSNS
- │g:a\b│ 7 │ 6 │ 5 │ 4 │ 3 │ 2 │ 1 │ 0 │
- ├───┼───┼───┼───┼───┼───┼───┼───┼───┤
- │ 0:00│ 6& │ 5% │ 4$ │ 3# │ 2" │ 1! │ ESC │未定義│
- │ 1:08│ BS │ \| │ ^~ │ -= │ 0 │ 9) │ 8( │ 7' │
- │ 2:10│ U │ Y │ T │ R │ E │ W │ Q │ TAB │
- │ 3:18│ S │ A │ [CR] │ [ │ @` │ P │ O │ I │
- │ 4:20│ ;+ │ L │ K │ J │ H │ G │ F │ D │
- │ 5:28│ N │ B │ V │ C │ X │ Z │ ] │ :* │
- │ 6:30│ DEL │ HOME │ [SP] │ _ │ /? │ .> │ ,< │ M │
- │ 7:38│ CLR │ ↓ │ → │ ↑ │ ← │ UNDO │Rolldn│Rollup│
- │ 8:40│ 4 │ + │ 9 │ 8 │ 7 │ - │ * │ / │
- │ 9:48│ 0 │ ENTER│ 3 │ 2 │ 1 │ = │ 6 │ 5 │
- │ A:50│ XF3 │ XF2 │ XF1 │ HELP │ 登録 │ 記号 │ . │ , │
- │ B:58│ ヒカナ │ INS │ CAPS │コード│ ローマ字│ かな │ XF5 │ XF4 │
- │ C:60│ F5 │ F4 │ F3 │ F2 │ F1 │ COPY │ BREAK│ 全角 │
- │ D:68│未定義│未定義│未定義│ F10 │ F9 │ F8 │ F7 │ F6 │
- │ E:70│未定義│未定義│未定義│未定義│ OPT.2│ OPT.1│ CTRL │ SHIFT│
- │ F:78│未定義│未定義│未定義│未定義│未定義│未定義│未定義│未定義│
-
- */
-